/**
 * <b>项目名称：</b>网络应用框架<br/>
 * <b>包    名：</b>com.hhwy.framework.persistent<br/>
 * <b>文 件 名：</b>JdbcDao.java<br/>
 * <b>版本信息：</b><br/>
 * <b>日    期：</b>2014年8月13日-下午4:34:17<br/>
 * <b>Copyright (c)</b> 2014恒华伟业科技股份有限公司-版权所有<br/>
 * 
 */
package com.hhwy.framework.persistent;

import java.util.List;
import java.util.Map;


 /**
 * <b>类 名 称：</b>SqlDao 提供基于Mybatis的数据访问接口<br/>
 * <b>类 描 述：</b><br/>
 * <b>创 建 人：</b>lihuiming<br/>
 * <b>修 改 人：</b>Administrator<br/>
 * <b>修改时间：</b>2014年8月13日 下午4:34:17<br/>
 * <b>修改备注：</b><br/>
 * @version 1.0.0<br/>
 * @param <E>
 */
public interface SqlDao<E> {
	
	/**
	 * getOne(查询单个结果)<br/>
	 * @param sqlKey
	 * @param params
	 * @return 
	 * T
	 * @exception 
	 * @since  1.0.0
	 */
	<T>T getOne(String sqlKey, Map<String, Object> params);
	<T>T getOne(String sqlKey, Object parameter);
	/**
	 * get(查询list结果)<br/>
	 * @param sqlId
	 * @param params
	 * @return 
	 * List<E>
	 * @exception 
	 * @since  1.0.0
	*/
	List<E> get(String sqlKey, Map<String, Object> params);
	List<E> get(String sqlKey, Object parameter);
	/**
	 * execute(执行新增操作)<br/>
	 * @param sqlKey
	 * @param params
	 * @return 
	 * int
	 * @exception 
	 * @since  1.0.0
	 */
	int save(String sqlKey, Object parameter);
	
	
	
	/**
	 * batExecute(更新操作)<br/>
	 * @param sqlKey
	 * @param dataList
	 * @return 
	 * int
	 * @exception 
	 * @since  1.0.0
	 */
	int update(String sqlKey, Object parameter);
	/**
	 * 
	 * delete(删除数据)<br/>
	 * @param sqlKey
	 * @param parameter
	 * @return 
	 * int
	 * @exception 
	 * @since  1.0.0
	 */
	int delete(String sqlKey, Object parameter);

	/**
	 * executeSql(执行sql)<br/>
	 * @param sqlKey
	 * @param parameter
	 * @return 
	 * Object
	 * @exception 
	 * @since  1.0.0
	*/
	Object executeSql(String sqlKey, Object parameter);
	
	/**
	 * queryPage 基于mybatis的分页查询<br/>
	 * @param sqlKey
	 * @param parameter
	 * @return 
	 * List<E>
	 * @exception 
	 * @since  1.0.0
	 */
	QueryResult query(String sqlKey, Map<String, Object> parameter);
	
	/**
	 * 获去当前数据库所有表<br/>
	 * @param sqlKey
	 * @param parameter
	 * @return 
	 * Object
	 * @exception 
	 * @since  1.0.0
	*/
	List<E> getAllTables();
	/**
	 * 获取指定数据库所有表
	 * getAllTables(描述这个方法的作用)<br/>
	 * @param dbName
	 * @return 
	 * List<E>
	 * @exception 
	 * @since  1.0.0
	 */
	List<E> getAllTables(String dbName);
	/**
	 * saveEntityBySQL 通过mybatis保存实体<br/> 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	void saveEntityBySQL(Object entity);
	
	/**
	 * saveExcludeNull(保存实体对象，排除为空的属性)<br/>
	 * @param entity 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public void saveExcludeNull(Object entity);
	
	
	/**
	 * saveEntityBySQL 通过mybatis保存实体<br/> 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	void insertEntityBySQL(Object entity);
	/**
	 * updateEntityBySQL 通过mybatis更新实体<br/> 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	void updateEntityBySQL(Object entity);
	
	public void updateExcludeNull(Object entity);
	/**
	 * deleteEntityBySQL 通过mybatis删除实体<br/> 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	void deleteEntityBySQL(Object entity);
	
	/**
	 * deleteEntityBySQL 通过mybatis删除实体<br/> 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	void deleteEntityBySQL(String id, Object entity);
}
